/* let temp: any = 888
let str: string = temp // ok */

/* let temp: unknown = 'hello'
// 把一个不知道的类型给了 string 类型的变量 str
// let str: string = temp // error

// let str: unknown = temp // ok
// let str: any = temp // ok

// 解决，配合类型断言
// let str: string = temp as string
let str: string = <string>temp */

/* let temp: string = '888'
// 不能直接断言 string 为 number，但可以断言 unknown 为 number
let num: number = temp as unknown as number
// let num: number = temp as number // error */

// type 声明了 Test 类型，用 number 和 string 形成了联合类型
/* type Test = number | string
const a: Test = '8' */

// & 交叉类型，此时 Test 变成了 never
// type Test = number & string

// 也可以当做函数的返回值，表示不会执行到头
/* function test(): never {
  throw new Error('Error')
} */
